import request from '@/config/axios'
import type { LayoutItem } from "grid-layout-plus";
import {CSSProperties} from "vue";
import {WallType} from "@/types/web3d";

// 党建 主题 网格数据
export interface ThemeGrid extends LayoutItem{
  label: string
  css: CSSProperties // 显示标签 CSS
}

// 党建 主题 模型元数据
export interface ThemeModelMeta {
  wallsMaterial?: { [key in WallType]?: string } // 墙体材质
  wallDisabled?: { [key in WallType]?: boolean } // 墙体禁用
  spawnPointPosition?: { x: number, y: number, z: number } // 初始点位
}

// 党建 主题 VO
export interface ThemeVO {
  id: number // 主题id
  name: string // 名称
  introduce: string // 介绍
  remark: string // 备注
  grid: ThemeGrid // 网格数据
  modelUrl: string // 模型地址
  modelMeta?: ThemeModelMeta // 模型元数据
}

// 党建 主题 API
export const ThemeApi = {
  // 查询党建 主题详情
  getTheme: async (id: number) => {
    return await request.get<ThemeVO>({ url: `/pb/theme/get?id=` + id })
  },

  // 获取所有主题
  getThemeList: async () => {
    return await request.get<ThemeVO[]>({ url: `/pb/theme/list` })
  },

  // 新增党建 主题
  createTheme: async (data: ThemeVO) => {
    return await request.post({ url: `/pb/theme/create`, data })
  },

  // 修改党建 主题
  updateTheme: async (data: ThemeVO) => {
    return await request.put({ url: `/pb/theme/update`, data })
  },

  // 删除党建 主题
  deleteTheme: async (id: number) => {
    return await request.delete({ url: `/pb/theme/delete?id=` + id })
  },
}
